package design;

import design.ceiling.LevelOneCeiling;
import design.ceiling.LevelTwoCeiling;
import design.coat.DuluxCoat;
import design.coat.LiBangCoat;
import design.floor.ShengXiangFloor;
import design.tile.DongPengTile;
import design.tile.MarcoPoloTile;

import java.math.BigDecimal;

/**
 * @author: hero生仔
 * 建造者类具体的各种组装由此类实现
 *
 * “一些基本物料不会变，但是其组合经常变化的时候” 可以使用建造者模式
 */
public class Builder {
    public IMenu levelOne(BigDecimal area) {
        return new DecorationPackageMenu(area,"豪华欧式")
                .appendCeiling(new LevelTwoCeiling())  // 吊顶 二级顶
                .appendCoat(new DuluxCoat())              // 涂料 多乐士
                .appendFloor(new ShengXiangFloor()); // 地板 圣象
    }

    public IMenu levelTwo(BigDecimal area) {
        return new DecorationPackageMenu(area,"轻奢田园")
                .appendCeiling(new LevelTwoCeiling())  // 吊顶 二级顶
                .appendCoat(new LiBangCoat()) // 涂料 立邦
                .appendTile(new MarcoPoloTile()); // 地砖 马可波罗
    }

    public IMenu levelThree(BigDecimal area) {
        return new DecorationPackageMenu(area,"现代简约")
                .appendCeiling(new LevelOneCeiling())  // 吊顶 一级顶
                .appendCoat(new LiBangCoat())  // 涂料 立邦
                .appendTile(new DongPengTile()); // 地砖 东鹏
    }
}
